

#include "stdafx.h"

#include "GBToolTipBitmapButton.h"



IMPLEMENT_DYNCREATE(CGBToolTipBitmapButton, CBitmapButton)

BEGIN_MESSAGE_MAP(CGBToolTipBitmapButton, CBitmapButton)
    ON_WM_DESTROY()
END_MESSAGE_MAP()


CGBToolTipBitmapButton::CGBToolTipBitmapButton()
{

}

CGBToolTipBitmapButton::~CGBToolTipBitmapButton()
{

}

////////////////////////////////////////////////////////////////////////////
// CToolTipButton message handlers

// Set the tooltip with a CString
void CGBToolTipBitmapButton::SetToolTipText(CString spText, BOOL bActivate)
{
    // We cannot accept NULL pointer
    if (spText.GetLength() <= 0 ) return;

    // Initialize ToolTip
    InitToolTip();

    // If there is no tooltip defined then add it
    if (m_ToolTip.GetToolCount() == 0)
    {
        CRect rectBtn; 
        GetClientRect(rectBtn);
        m_ToolTip.AddTool(this, (LPCTSTR)spText, rectBtn, 1);
    }

    // Set text for tooltip
    m_ToolTip.UpdateTipText((LPCTSTR)spText, this, 1);
    m_ToolTip.Activate(bActivate);
}

void CGBToolTipBitmapButton::InitToolTip()
{
    if (m_ToolTip.m_hWnd == NULL)
    {
        // Create ToolTip control
        m_ToolTip.Create(this);
        // Create active
        m_ToolTip.Activate(TRUE);
    }
} // End of InitToolTip


BOOL CGBToolTipBitmapButton::PreTranslateMessage(MSG* pMsg) 
{
    // TODO: Add your specialized code here and/or call the base class
    InitToolTip();
    m_ToolTip.RelayEvent(pMsg);		
    return CBitmapButton::PreTranslateMessage(pMsg);
}

void CGBToolTipBitmapButton::OnDestroy()
{
    m_ToolTip.DestroyWindow();
}

